Some workspaces, such as windows, often have the home directory not in the
hierarchy of where projects live, which means that configuration may not work by
default. The home directory, however, is already singled out for `cargo login`
and it's pretty semantically special, so this commit ensures that we always look
at the home directory for configuration if it exists.
Closes #933
if !current.pop() { break; }
}
+ // Once we're done, also be sure to walk the home directory even if it's not
+ // in our history to be sure we pick up that standard location for
+ // information.
+ let home = try!(os::homedir().require(|| {
+ human("Cargo couldn't find your home directory. \
+ This probably means that $HOME was not set.")
+ }));
+ if !home.is_ancestor_of(pwd) {
+ let config = home.join(".cargo/config");
+ if config.exists() {
+ let file = try!(File::open(&config));
+ try!(walk(file));
+ }
+ }
+
Ok(())
}
pub fn dl_url() -> Url { Url::from_file_path(&dl_path()).unwrap() }
pub fn init() {
- let config = paths::root().join(".cargo/config");
+ let config = paths::home().join(".cargo/config");
fs::mkdir_recursive(&config.dir_path(), io::USER_DIR).assert();
File::create(&config).write_str(format!(r#"
[registry]